package ig.ejb.metrica.da.util;


import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

/**
 * The Data Transfer Object class.
 * Created 1/08/2006 05:32:35 PM
 * @author jsanchez
 */
public class AdicionalescontratosDTO implements java.io.Serializable {
    
    private java.lang.Integer id;
    private java.sql.Timestamp fechaCorte;
    private java.lang.Double tircompra;
    private java.lang.Double tirvaloracion;
    private java.lang.Double valorafecha1;
    private java.lang.Double valorafecha2;
    private java.lang.Double valorTirFecha1;
    private java.lang.Double valorTirFecha2;
    private boolean dirty = false; //dirty flag
    
    public AdicionalescontratosDTO(){
    }
    
    public AdicionalescontratosDTO(java.lang.Integer id, java.sql.Timestamp fechaCorte, java.lang.Double tircompra, java.lang.Double tirvaloracion, java.lang.Double valorafecha1, java.lang.Double valorafecha2,java.lang.Double valorTirFecha1, java.lang.Double valorTirFecha2 ){
        this.id = id;
        this.fechaCorte = fechaCorte;
        this.tircompra = tircompra;
        this.tirvaloracion = tirvaloracion;
        this.valorafecha1 = valorafecha1;
        this.valorafecha2 = valorafecha2;
        this.valorTirFecha1=valorTirFecha1;
        this.valorTirFecha2=valorTirFecha2;
    }
    
    private void setDirty(){
        dirty = true;
    }
    
    public boolean isDirty(){
        return dirty;
    }
    
    public void resetDirty(){
        dirty = false;
    }

    public Double getValorTirFecha1() {
        return valorTirFecha1;
    }

    public Double getValorTirFecha2() {
        return valorTirFecha2;
    }

    public void setValorTirFecha1(Double valorTirFecha1) {
        this.valorTirFecha1 = valorTirFecha1;        setDirty();
    }

    public void setValorTirFecha2(Double valorTirFecha2) {
        this.valorTirFecha2 = valorTirFecha2;        setDirty();
    }


    
    public java.lang.Integer getId(){ return id; }
    public void setId(java.lang.Integer id){
        this.id = id;
        setDirty();
    }
    
    public java.sql.Timestamp getFechaCorte(){ return fechaCorte; }
    public void setFechaCorte(java.sql.Timestamp fechaCorte){
        this.fechaCorte = fechaCorte;
        setDirty();
    }
    
    public java.lang.Double getTircompra(){ return tircompra; }
    public void setTircompra(java.lang.Double tircompra){
        this.tircompra = tircompra;
        setDirty();
    }
    
    public java.lang.Double getTirvaloracion(){ return tirvaloracion; }
    public void setTirvaloracion(java.lang.Double tirvaloracion){
        this.tirvaloracion = tirvaloracion;
        setDirty();
    }
    
    public java.lang.Double getValorafecha1(){ return valorafecha1; }
    public void setValorafecha1(java.lang.Double valorafecha1){
        this.valorafecha1 = valorafecha1;
        setDirty();
    }
    
    public java.lang.Double getValorafecha2(){ return valorafecha2; }
    public void setValorafecha2(java.lang.Double valorafecha2){
        this.valorafecha2 = valorafecha2;
        setDirty();
    }
    
    
    // populate DTO from Object
//    public void populate(Object o) {
//        Method[] methods = o.getClass().getMethods();
//        for (int i = 0; i < methods.length; i++) {
//            try{
//                String methodName = methods[i].getName();
//                if ((methodName.startsWith("get") ||
//                        methodName.startsWith("is"))
//                        && Modifier.isPublic(methods[i].getModifiers())
//                        && methods[i].getParameterTypes().length == 0
//                        && !methodName.equals("getClass")) {
//                    String setMethodName = methodName.replaceFirst(methodName.startsWith("get")?"get":"is","set");
//                    getClass().getMethod(setMethodName,new Class[]{methods[i].getReturnType()}).
//                            invoke(this, new Object[]{methods[i].invoke(o,null)});
//                }
//            }catch(IllegalAccessException ilE){
//                ilE.printStackTrace();
//            }catch(InvocationTargetException invE){
//                invE.printStackTrace();
//            }catch(NoSuchMethodException noE){
//                // Don't find setMethod for field
//            }
//        }
//    }
    
    
    /**
     * @see java.lang.Object#toString()
     */
    public String toString(){
        return getClass().getName() + "[" +
                "id: " + this.id + ", " +
                "fechaCorte: " + this.fechaCorte + ", " +
                "tircompra: " + this.tircompra + ", " +
                "tirvaloracion: " + this.tirvaloracion + ", " +
                "valorafecha1: " + this.valorafecha1 + ", " +
                "valorafecha2: " + this.valorafecha2 + "]";
    }
    
    /**
     * @see java.lang.Object#equals(java.lang.Object)
     */
    public boolean equals(java.lang.Object otherOb) {
        
        if (this == otherOb) {
            return true;
        }
        if (!(otherOb instanceof ig.ejb.metrica.da.util.AdicionalescontratosDTO)) {
            return false;
        }
        ig.ejb.metrica.da.util.AdicionalescontratosDTO other = (ig.ejb.metrica.da.util.AdicionalescontratosDTO) otherOb;
        return (
                
                (id==null?other.id==null:id.equals(other.id))
                &&
                (fechaCorte==null?other.fechaCorte==null:fechaCorte.equals(other.fechaCorte))
                &&
                (tircompra==null?other.tircompra==null:tircompra.equals(other.tircompra))
                &&
                (tirvaloracion==null?other.tirvaloracion==null:tirvaloracion.equals(other.tirvaloracion))
                &&
                (valorafecha1==null?other.valorafecha1==null:valorafecha1.equals(other.valorafecha1))
                &&
                (valorafecha2==null?other.valorafecha2==null:valorafecha2.equals(other.valorafecha2))
                
                );
    }
    
    /**
     * @see java.lang.Object#hashCode()
     */
    public int hashCode() {
        return (
                
                (id==null?0:id.hashCode())
                ^
                (fechaCorte==null?0:fechaCorte.hashCode())
                ^
                (tircompra==null?0:tircompra.hashCode())
                ^
                (tirvaloracion==null?0:tirvaloracion.hashCode())
                ^
                (valorafecha1==null?0:valorafecha1.hashCode())
                ^
                (valorafecha2==null?0:valorafecha2.hashCode())
                
                );
    }
    
}
